package com.jacob.androidstudy.androidnote.userinterface;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.content.DialogInterface.OnClickListener;
import android.content.DialogInterface.OnDismissListener;
import android.util.Log;

/**
 * Dialog
 * 对话框指的是出现在当先Activity前的小窗口。对话框下面的Activity会失去焦点，用户的所有动作都会由对话框响应。
 * 对话框通常用于显示：某些要中断用户操作的通知（登录提示）、与当前程序直接相关的小任务等（进度条）。
 * 
 * android.app.Dialog类是所有对话框的父类。但是一般应使用其子类：
 * android.app.AlertDialog
 * android.app.ProgressDialog
 * android.app.DatePickerDialog
 * android.app.TimePickerDialog
 * 
 * 若需要自定义对话框，可以继承Dialog类或其子类，然后自定义Layout。
 * 
 */
public class Dialog对话框 extends Activity {
	
	/**
	 * AlertDialog
	 * 可以包含0-3个按钮，含有单选框/复选框的列表。AlertDialog是最常见的对话框。
	 * 
	 * 
	 */
	public void AboutAlertDialog() {
//		创建AlertDialog，方法一：
		
//		1.创建AlertDialog所在的Activity。
		class MainActivity extends Activity {
			
//			2.给当前Activity中所有对话框定义一个ID，便于区分。
			static final int EXIT_DIALOG = 0;
			static final int DELETE_DIALOG = 1;
			
//			3.在Activity的onCreateDialog()方法中创建AlertDialog。对话框第一次显示时，系统调用本方法。
			@Override
			protected Dialog onCreateDialog(int id) {
				final int dialogId = id;
				Dialog dialog = null;
				
				if (id == MainActivity.EXIT_DIALOG) {
//					创建AlertDialog时，需要使用AlertDialog.Builder对象。
					AlertDialog.Builder alerBuilder = new AlertDialog.Builder(this);
					
//					然后设置AlertDialog.Builder对象的各种构造参数。
					alerBuilder.setTitle("Warning")//设置标题
						.setIcon(android.R.drawable.ic_dialog_alert)//设置图标
						.setMessage("You are quiting, all file will not be saved.")//设置正文
						.setPositiveButton("Yes, quite now.", new OnClickListener() {//设置Positive按钮的文字和点击事件
//							点击按钮时，系统调用本方法。
							@Override
							public void onClick(DialogInterface dialog, int which) {
								MainActivity.this.removeDialog(dialogId); //清空Dialog中的所有内容，并将其隐藏。
								MainActivity.this.finish();
							}
						})
						.setNegativeButton("No, don't quite.", new OnClickListener() {//设置Negative按钮的文字和点击事件
//							点击按钮时，系统调用本方法。
							@Override
							public void onClick(DialogInterface dialog, int which) {
								dialog.dismiss(); //隐藏Dialog。
							}
						})
						.setNeutralButton("Save files, then quite.", new OnClickListener() {//设置Neutral按钮的文字和点击事件
//							点击按钮时，系统调用本方法。
							@Override
							public void onClick(DialogInterface dialog, int which) {
								MainActivity.this.finish();
							}
						});
					
//					然后使用AlertDialog.Builder对象构造AlertDialog对象
					dialog = alerBuilder.create();
					
//					Dismiss事件
					dialog.setOnDismissListener(new OnDismissListener() {
//						Dialog.dismiss()被调用时，系统调用本方法
						@Override
						public void onDismiss(DialogInterface dialog) {
							
						}
					});
					
//					Cancel事件
					dialog.setOnCancelListener(new OnCancelListener() {
//						Dialog.cancel()被调用时，或者用户按了硬“Cancel”键时，系统调用本方法
						@Override
						public void onCancel(DialogInterface dialog) {
							
						}
					});
					
					
					
				} else if (id == MainActivity.DELETE_DIALOG) {
//					同上，不写了。
				} else {
					Log.e("LessonLog", "Dialog错误");
				}
				
//				将创建好的对话框返回
				return dialog;
				
			}

//			4.在Activity的onPrepareDialog()方法中改变AlertDialog。对话框每次显示时，系统都会调用本方法。
			@Override
			protected void onPrepareDialog(int id, Dialog dialog) {
				super.onPrepareDialog(id, dialog);
				
				if (id == MainActivity.EXIT_DIALOG) {
					
				} else if (id == MainActivity.DELETE_DIALOG) {
					
				} else {
					
				}
				
			}
			
			
//			5.需要的时候，调用Activity对象的showDialog()方法，传入第2步定义的ID，即可显示对话框。
			
			
			
		}
		
	}
	
	/**
	 * CustomDialog
	 * 
	 */
	public void AboutCustomDialog() {
		
	}
	
}
